//
//  XYPictureView.swift
//  01-新浪微博
//
//  Created by 陈许亚 on 16/3/15.
//  Copyright © 2016年 cxy. All rights reserved.
//
//将配图视图添加到原创视图中，不能添加到cell中
import UIKit
private let picturCellMargin: CGFloat = 5
class XYPictureView: UICollectionView {
    //获取图片数量
    //计算视图数量，显示图片数据源
    var imageURLs: [NSURL]? {
        didSet{
            //根据数量，计算视图大小
            let pSize = calculatePictureSize()
            self.snp_updateConstraints { (make) -> Void in
                make.size.equalTo(pSize)
            }
//            self.snp_makeConstraints { (make) -> Void in
//                make.size.equalTo(pSize)
//            }
            //刷新图片数据
            reloadData()
        }
    }
    
    //必须调用指定的构造函数才能实例化对象
    init(){
        //必须是流水布局对象
        let flowLayout = UICollectionViewLayout()
        super.init(frame: CGRectZero, collectionViewLayout: flowLayout)
    }
        //默认实现报错
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //计算图片大小
    /**
    1.没有图片，直接不显示
    2.一张图片，按照原始尺寸显示.设置itemSize
    3.4张图片，每行显示2张
    4.4张以上：每行显示3张
    */
    func calculatePictureSize() -> CGSize{
       let imageCount = imageURLs?.count ?? 0
        let maxWidth = screenWidth - 2 * statusCellMargin
        let itemWidth = (maxWidth - 2 * picturCellMargin) / 3
        
        //获取流对象
        let flowLayout = UICollectionViewLayout() as? UICollectionViewFlowLayout
        
        if imageCount == 0 {
            return CGSizeZero
        }
        if imageCount == 1 {
            //TODO:原始尺寸比较难，先给定固定尺寸
           let imageSize = CGSize(width: 150, height: 100)
            //TOD:设置itemSize
            flowLayout?.itemSize = imageSize
            return imageSize
        }
        
        if imageCount == 4 {
            //屏幕尺寸： screenWidth
            let width = 2 * itemWidth + picturCellMargin
          let itemSize = CGSize(width: width, height: width)
            
            return itemSize
            
        }
        //多余4张的
        //计算有多少行
        let row = CGFloat(imageCount - 1) / 3 + 1
        let rowHeight = row * itemWidth + (row - 1) * picturCellMargin
        
        return CGSize(width: maxWidth, height: rowHeight)
    }
    
    
    
}
